package com.linkgie.galaxyframework.shell;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface ShellCommand {

	/**
	 * 命令分组( {@link #group()}) 的默认值；<br>
	 */
	String INHERITED = "";

	/**
	 * 命令的名称，命令行中输入此名称时会调用命令；<br>
	 * 
	 * 如果未设置；，则使用方法的名称，将方法名的驼峰形式转为“-”连接符形式，例如: 方法名称 createData 转换后的命令名称为 create-data
	 * ；
	 * 注：ShellMethod
	 */
	String[] key() default {};

	/**
	 * 命令的描述；
	 */
	String value() default "";

	/**
	 * 参数前缀字符；<br>
	 * 
	 * 默认为: -- <br>
	 * 
	 * @return
	 */
	String prefix() default "--";

	/**
	 * 命令分组；
	 * <p>
	 * 
	 * 设置此属性可显式的指定命令所属的分组。“命令分组”被用于在显示命令列表时将相关的命令归类呈现。<br>
	 * 未显式设置时，会以声明了命令方法的类名为分组名。
	 * 
	 * @return
	 */
	String group() default INHERITED;

}
